package main

import (
	. "fmt"
	"time"
)

func main() {
	//time.NewTicker(时间d)  设置定时时间d，每隔设定时间d执行一次
	//time.AfterFunc(时间d, f func())  等待时间段d过去，然后调用f
	//time.NewTimer(时间d)  在等待持续时间d之后，然后在返回的通道上发送当前时间，即channel中取出的是时间

	//ticker := time.NewTicker(time.Second)  // 开启定时，每秒执行一次。类似time.Sleep()
	//n := 3
	//for t := range ticker.C {
	//	Println(t)
	//	n--
	//	if n==0{
	//		ticker.Stop()  // 停止定时执行
	//		break
	//	}
	//}

	timer := time.NewTimer(time.Second*2)
	//t :=<-timer.C
	//Println("t: ", t)
	go func() {
		t1 :=<-timer.C
		Println("t1:", t1)
	}()
	//timer.Stop()
	timer1 := time.AfterFunc(time.Second*3, func() {
		Println("执行")
	})
	timer1.Reset(time.Second*2)

	ch1 := time.After(3 * time.Second)
	Println("now: ", time.Now())
	Println("ch1:", <-ch1)
}
